﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Gustozzi.BE;
using Gustozzi.DAL;
using Gustozzi.BL;
namespace WebGustozzi.ModuloVentas
{
    public partial class wfActualizarPromocion : System.Web.UI.Page
    {
        VentasDataEntities contexto=null;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                inicializar();
            }
        }

        public void inicializar()
        {

        }

        protected void imbCerrar_Click(object sender, ImageClickEventArgs e)
        {
            Response.Redirect("../wfPrincipal.aspx");
        }

        protected void txtCodigoPromo_TextChanged(object sender, EventArgs e)
        {
            try
            {
                BuscarPromocion();
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        public void Limpiar() 
        {

        }

        public void BuscarPromocion() 
        {
            if (contexto == null) 
            {
                contexto = new VentasDataEntities();
            }

            if (txtCodigoPromo.Text.Trim().Equals(string.Empty)) 
            {
                LimpiarFormulario();
                return;
            }

            int idPromocion = Convert.ToInt32(txtCodigoPromo.Text.Trim());

            var listado = from v in contexto.Promociones
                          where v.codigoPromocion == idPromocion
                          select v;

            if (listado.Count() > 0)
            {
                Promocion oPromocion = listado.First();
                txtCodigoCamp.Text = oPromocion.codigoCampana.ToString();
                txtNombrePromo.Text = oPromocion.nombre;
                BuscarCampaña();
                txtDescripcion.Text = oPromocion.descripcion;
                txtPrecioTotal.Text = oPromocion.precioTotal.ToString();
                rblTipo.SelectedValue = oPromocion.estado;
                txtFechaInicio.Text = oPromocion.fechaInicioVigencia.ToShortDateString();
                txtFechaFin.Text = oPromocion.fechaInicioVigencia.ToShortDateString();
            }
            else 
            {
                LimpiarFormulario();
                return;

            }

        }

        public void BuscarCampaña() 
        {
            if (contexto == null) 
            {
                contexto = new VentasDataEntities();
            }

            if (txtCodigoCamp.Text.Trim().Equals(string.Empty)) 
            {
                LimpiarFormularioCampaña();
                return;
            }

            int idCamp = Convert.ToInt32(txtCodigoCamp.Text.Trim());

            var listado = from v in contexto.Campañas
                          where v.codigoCampana == idCamp
                          select v;

            if (listado.Count() > 0)
            {
                Campaña oCamp = listado.First();
                txtNombreCampaña.Text = oCamp.nombre;
                txtIniCamp.Text = oCamp.fechaInicioVigencia.Value.ToShortDateString();
                txtFinCamp.Text = oCamp.fechaFinalVigencia.Value.ToShortDateString();
            }
            else
            {
                LimpiarFormularioCampaña();
                return;
            }
        }

        public void LimpiarFormulario() 
        {
            txtCodigoCamp.Text = string.Empty;
            txtNombrePromo.Text = string.Empty;
            txtDescripcion.Text = string.Empty;
            txtPrecioTotal.Text = string.Empty;
            rblTipo.SelectedIndex = 0;
            txtFechaInicio.Text = string.Empty;
            txtFechaFin.Text = string.Empty;
        }

        public void LimpiarFormularioCampaña() 
        {
            txtNombreCampaña.Text = string.Empty;
            txtIniCamp.Text = string.Empty;
            txtFinCamp.Text = string.Empty;
        }

        protected void txtCodigoCamp_TextChanged(object sender, EventArgs e)
        {
            try
            {
                BuscarCampaña();
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        protected void imbNuevo_Click(object sender, EventArgs e)
        {
            try
            {
                if(contexto==null)
                {
                    contexto=new VentasDataEntities();
                }
                var oListado = from p in contexto.Promociones
                               select p.codigoPromocion;
                int idPromo = 1;

                if (oListado.Count() > 0) 
                {
                    idPromo = oListado.Max();
                    idPromo += 1;
                }
                LimpiarFormularioCampaña();
                LimpiarFormulario();
                txtCodigoPromo.Text = idPromo.ToString();
                
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            try
            {
                Guardar();
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        public void Guardar()
        {
            if (contexto == null) 
            {
                contexto = new VentasDataEntities();
            }

            if(txtCodigoPromo.Text.Trim().Equals(String.Empty))
            {
                throw new Exception("Genere codigo");
            }
            
            if (txtCodigoCamp.Text.Trim().Equals(String.Empty))
            {
                throw new Exception("Seleccione campaña");
            }

            int idPromocion = Convert.ToInt32(txtCodigoPromo.Text.Trim());

            var lstPromocion = from p in contexto.Promociones
                               where p.codigoPromocion == idPromocion
                               select p;
            
            Promocion oPromocion =null;
            
            if (lstPromocion.Count() > 0)
            {
                oPromocion= lstPromocion.First();
            }
            else 
            {
                oPromocion = new Promocion();
                contexto.AddToPromociones(oPromocion);
            }

            int idCampana = Convert.ToInt32(txtCodigoCamp.Text.Trim());

            oPromocion.codigoPromocion = idPromocion;
            oPromocion.codigoCampana = idCampana;
            oPromocion.descripcion = txtDescripcion.Text;
            oPromocion.nombre = txtNombrePromo.Text;
            oPromocion.estado = rblTipo.SelectedValue;
            oPromocion.precioTotal = Convert.ToDouble (txtPrecioTotal.Text);

            MarketingBL oMarketingBL = new MarketingBL();
           int rpt= oMarketingBL.ActualizarPromocion(oPromocion, contexto);
           if (rpt > 0)
           {
               //muestra satisfactorio
           } else 
           {
               //muestra error
           }
        }


       
    }
}